package com.aiti.lulian.entity;

import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("商机")
@TableName("communicate_info")
public class CommunicateInfo {

    /**
     * ID（主键）
     */
    @ApiModelProperty("ID")
    @TableId(value = "base_id", type = IdType.ASSIGN_UUID)
    private String baseId;

    /**
     * 商机名称
     */
    @ApiModelProperty("商机名称")
    @NotNull(message = "商机名称不能为空！")
    @TableField("product_name")
    private String productName;

    /**
     * 联系人
     */
    @ApiModelProperty("联系人")
    @NotNull(message = "联系人不能为空！")
    @TableField("call_name")
    private String callName;

    /**
     * 联系方式
     */
    @ApiModelProperty("联系方式")
    @NotNull(message = "联系人手机号不能为空！")
    @TableField("phone")
    private String phone;

    /**
     * 其他内容
     */
    @ApiModelProperty("其他内容")
    @TableField("desc_info")
    private String descInfo;

    /**
     * 来源
     */
    @ApiModelProperty("来源")
    @TableField("source")
    private String source;

    /**
     * 企业Id
     */
    @ApiModelProperty("企业ID")
    @TableField("company_id")
    private String companyId;

    /**
     * 企业名称
     */
    @ApiModelProperty("企业名称")
    @NotNull(message = "企业名称不能为空！")
    @TableField("company_name")
    private String companyName;

    /**
     * 销售负责人ID
     */
    @ApiModelProperty("销售负责人ID")
    @TableField("sales_head_id")
    private String salesHeadId;

    /**
     * 商机状态（'0'：沟通中，'1'：谈判中，'2'：已完成）
     */
    @ApiModelProperty("商机状态")
    @TableField("status")
    private String status;

    /**
     * 类型（'1'：属于收到的商机，'2'：属于后台新增的商机）
     */
    @ApiModelProperty("类型")
    @TableField("type")
    private String type;

    /**
     * 是否已删除（'0'：存在，'1'：已删）
     */
    @ApiModelProperty("是否已删除")
    @TableField("is_del")
    private String isDel;

    /**
     * 创建者
     */
    @ApiModelProperty("创建者")
    @TableField("creator")
    private String creator;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField(value = "base_create_time", fill = FieldFill.INSERT)
    private Date baseCreateTime;

    /**
     * 更新者
     */
    @ApiModelProperty("更新者")
    @TableField("update_by")
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "base_update_time", fill = FieldFill.UPDATE)
    private Date baseUpdateTime;

    @ApiModelProperty("负责人名称")
    @TableField("director_name")
    private String directorName;

    @ApiModelProperty("客户id")
    @TableField("customer_id")
    private String customerId;

    @ApiModelProperty("询盘id")
    @TableField("inquiry_id")
    private String inquiryId;

    @ApiModelProperty("商机类型")
    @TableField("communicate_type")
    private String communicateType;

    @ApiModelProperty("商机来源")
    @TableField("communicate_source")
    private String communicateSource;

    @ApiModelProperty("成交进度")
    @TableField("transaction_progress")
    private String transactionProgress;

    @ApiModelProperty("备注")
    @TableField("remark")
    private String remark;

    @ApiModelProperty("负责人id")
    @TableField("director_id")
    private String directorId;
    @ApiModelProperty("合同确认状态")
    @TableField("confirm_status")
    private String confirmStatus;
    @ApiModelProperty("商机状态")
    @TableField("communicate_status")
    private String communicateStatus;

    private String deptId;
    @ApiModelProperty("商机获取时间")
    private Date businessAquireTime;
    @ApiModelProperty("预计销售金额")
    private BigDecimal estimateSaleAmount;
    @ApiModelProperty("预计签单时间")
    private Date estimateSignTime;

    @ApiModelProperty("下次跟进时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    private Date nextFollowUpTime;
    @ApiModelProperty("商机附件")
    private String attachment;

    @TableField("communicate_from")
    @ApiModelProperty("商机来源.默认值0：原来的数据，1：询价单，2：招募单，3：招标信息")
    private Integer communicateFrom;

    @TableField("communicate_from_base_id")
    @ApiModelProperty("来源id")
    private String communicateFromBaseId;

    @TableField("supply_url")
    @ApiModelProperty("供应商链接")
    private String supplyUrl;
}